
function MyJquery() {
    this.myAjax=function(dataObj) {
         // 1 从dataObj 对象中获取参数信息
         var url = dataObj.url;
         var type = dataObj.type || "GET";
         var data = dataObj.data || {};
         var dataType = dataObj.dataType || "text";
         var async = dataObj.async !== false
         var success = dataObj.success;
         // 2 编写参数  key = value
         var params = "t=" + Date.now()
         for (var key in data) {
             var value = data[key];
             params += "&" + key + "=" + value;
         }
         // 跨域
         if (dataType === "jsonp") {
             var jsonp = dataObj.jsonp || "callback";
             var jsonpCallback = dataObj.jsonpCallback || "jQuery" + ("1.2.1" + Math.random()).replace(/\D/g, "") +
                 "_" + Date.now()
             params += "&" + jsonp + "=" + jsonpCallback;
             // 创建script标签 发送跨域请求
             var scriptNode = document.createElement("script");
             scriptNode.src = url+"?"+params
             // 2 将script加入到head中
             // 2.1 获取到head节点
             var headNode = document.querySelector("head");
             // 2.2 将script 添加到head的最后面
             headNode.appendChild(scriptNode)
             window[jsonpCallback] = function(data) {
                 success(data)
             }
         
             return;
         }

         // 非跨域
         var xhr = new XMLHttpRequest();
         if ("GET" === type.toUpperCase()) {
             // 准备发送
             xhr.open(type, url + "?" + params, async)
             // 发送
             xhr.send()
         } else if ("POST" === type.toUpperCase()) {
             // 准备发送
             xhr.open(type, url, async)
             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
             // 发送
             xhr.send(params)
         }
         if(!async) {
             var value = xhr.responseText;
                 if (dataType === "json") {
                     value = JSON.parse(value)
                 }
             success(value)
             return;
         }
         // 事件监听
         xhr.onreadystatechange = function () {
             // ajax状态码和响应码 
             if (xhr.readyState === 4 && xhr.status === 200) {
                 var value = xhr.responseText;
                 if (dataType === "json") {
                     value = JSON.parse(value)
                 }
                 success(value)
             }
         }

    }
}

var $$ = new MyJquery();